var loginUrl = "/login"
var testUrl = "/admin/device"
var userName = "admin"
var userPwd = "123456"

describe('设备增删查改', () => {
  
  Cypress.Commands.add("login", () =>{    
    cy.session(userName, ()=>{
      cy.visit(loginUrl)
      cy.get('input[name=username]').type(userName)
      cy.get('input[name=password]').type(userPwd, { log: false })
  
      cy.get('button#login-button').click()
      cy.contains("首页");
    })
  })

  beforeEach(()=>{//验证登录
      cy.login()
      cy.visit(testUrl)
  })

  
  it('页面显示', () => {//验证表头
    const strTitle = ['编号','外设名称','类型','创建日期','操作']
    cy.title().should('contain','外设管理')
    cy.get('table > thead > tr > th').should('have.length', 5)
    var iNum = 0
    for(let i=0; i<5; i++){
      iNum = i + 1
      cy.get('table > thead > tr > th:nth-child(' + iNum + ') > div').contains(strTitle[i])
    }
  })

  function formatTime(i) {
    return i<10?"0" + i:i;
  }
  function getCurrentTime() {
    const date = new Date();
    return date.getFullYear() + "-" 
            + formatTime(date.getMonth() + 1) + "-" 
            + formatTime(date.getDate()) + " " 
            + formatTime(date.getHours()) + ":" 
            + formatTime(date.getMinutes()) + ":" ;
  }

  it('新增记录', () => {//正常添加记录
    cy.get('button').contains('+添加').click()
    cy.contains('label','外设名称').parent().find('input').type('新增测试设备')
    cy.contains('label','类型').parent().find('input').type('新增测试类型') 
    cy.get('button').contains('确定').click()

    cy.wait(100)
    cy.get('input[placeholder="设备名称"]').type('新增测试设备')    
    cy.get('button').contains('查询搜索').click()
      cy.get('table > tbody > tr').within(()=>{
        cy.get('td').eq(1).should('contain', '新增测试设备')
        cy.get('td').eq(2).should('contain', '新增测试类型')
        cy.get('td').eq(3).should('contain', getCurrentTime())
      })   
  })

  it('清空查询条件', () => {    
    cy.get('input[placeholder="设备名称"]').type('新增测试设备')    
    cy.get('input[placeholder="设备类型"]').type('新增测试类型')

    cy.contains('button','重置查询').click()
    cy.get('input[placeholder="设备名称"]').invoke('val').should('eq',"")
    cy.get('input[placeholder="设备类型"]').invoke('val').should('eq',"")
  })

  it('按名称查询', () => {
    cy.contains('button','重置查询').click()
    cy.get('input[placeholder="设备名称"]').type('新增测试设备')
    
    cy.intercept('GET', "/api/robot-device-type/v1/?page=1&limit=10&name=%E6%96%B0%E5%A2%9E%E6%B5%8B%E8%AF%95%E8%AE%BE%E5%A4%87").as('visitTestURL')  
    cy.contains('button','查询搜索').click()
    cy.wait("@visitTestURL")
      .its("response.body.data.total")
      .should('eq',1)
  })

 it('按类型查询', () => {
    cy.contains('button','重置查询').click()
    cy.get('input[placeholder="设备类型"]').type('新增测试类型')
    cy.contains('button','查询搜索').click()

    cy.wait(100)
    cy.get('table > tbody > tr').should('have.length',1)
  })

  it('单修改设备名称', () => {
    cy.contains('button','重置查询').click()
    cy.get('input[placeholder="设备名称"]').type('新增测试设备')
    cy.contains('button','查询搜索').click()

    cy.wait(100)
    cy.contains('button','编辑').click()
    cy.contains('label','外设名称').parent().find('input').type('新增测试设备-修改')
    cy.get('button').contains('确定').click()

    cy.wait(100)
    cy.get('input[placeholder="设备名称"]').type('新增测试设备-修改')    
    cy.get('button').contains('查询搜索').click()
    
    cy.wait(100)
    cy.get('table > tbody > tr').within(()=>{
      cy.get('td').eq(1).should('contain', '新增测试设备-修改')
      cy.get('td').eq(2).should('contain', '新增测试类型')
    })

  })

  it('单修改设备类型', () => {
    cy.contains('button','重置查询').click()
    cy.get('input[placeholder="设备类型"]').type('新增测试类型')
    cy.contains('button','查询搜索').click()

    cy.wait(100)
    cy.contains('button','编辑').click()
    cy.contains('label','类型').parent().find('input').type('新增测试类型-修改')
    cy.get('button').contains('确定').click()

    cy.wait(100)
    cy.get('input[placeholder="设备类型"]').type('新增测试类型-修改')    
    cy.get('button').contains('查询搜索').click()
    
    cy.wait(100)
    cy.get('table > tbody > tr').within(()=>{
      cy.get('td').eq(1).should('contain', '新增测试设备-修改')
      cy.get('td').eq(2).should('contain', '新增测试类型-修改')
    })

  })
  

  it('修改设备及类型', () => {
    cy.contains('button','重置查询').click()
    cy.get('input[placeholder="设备名称"]').type('新增测试设备-修改')
    cy.get('input[placeholder="设备类型"]').type('新增测试类型-修改')
    cy.contains('button','查询搜索').click()

    cy.wait(100)
    cy.contains('button','编辑').click()
    cy.contains('label','外设名称').parent().find('input').type('新增测试设备')
    cy.contains('label','类型').parent().find('input').type('新增测试类型')
    cy.get('button').contains('确定').click()

    cy.wait(100)
    cy.get('input[placeholder="设备名称"]').type('新增测试设备')
    cy.get('input[placeholder="设备类型"]').type('新增测试类型')    
    cy.get('button').contains('查询搜索').click()
    
    cy.wait(100)
    cy.get('table > tbody > tr').within(()=>{
      cy.get('td').eq(1).should('contain', '新增测试设备')
      cy.get('td').eq(2).should('contain', '新增测试类型')
    })

  })

  
  it('删除设备', () => {
    cy.contains('button','重置查询').click()
    cy.get('input[placeholder="设备名称"]').type('新增测试设备')
    cy.get('input[placeholder="设备类型"]').type('新增测试类型')
    cy.contains('button','查询搜索').click()

    cy.wait(100)
    cy.contains('button','删除').click()

    cy.wait(100)
    cy.get('input[placeholder="设备名称"]').type('新增测试设备') 
    cy.get('button').contains('查询搜索').click()
    
    cy.wait(100)
    cy.get('div').contains('span','暂无数据')
  })
})




